if(ANDROID AND ANDROID_NATIVE_API_LEVEL LESS 24)
    # https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
    set(HAVE_FILE_OFFSET_BITS FALSE CACHE INTERNAL "")
endif()

if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
    add_compile_definitions(_WINSOCK_DEPRECATED_NO_WARNINGS)
endif()

# Process the libs and targets in the variable named by `input`
# into a flat list of libs in the variable named by `output`.
# Simplify -framework elements.
# Use -l where possible.
# Avoid duplicates.
function(kmpkg_curl_flatten input output)
    foreach(var IN ITEMS IMPORT_LIBRARY_SUFFIX STATIC_LIBRARY_SUFFIX SHARED_LIBRARY_SUFFIX)
        string(REPLACE "." "[.]" "${var}" "${CMAKE_${var}}")
    endforeach()

    set(output_libs "${${output}}")
    if(CMAKE_BUILD_TYPE STREQUAL "Debug")
        string(REGEX REPLACE ";optimized;[^;]*|;debug" "" input_libs "KMPKG;${${input}}")
    else()
        string(REGEX REPLACE ";debug;[^;]*|;optimized" "" input_libs "KMPKG;${${input}}")
    endif()
    list(REMOVE_AT input_libs 0)
    while(input_libs)
        list(POP_BACK input_libs lib)
        string(REGEX REPLACE "^.<LINK_ONLY:(.*)>\$" "\\1" lib "${lib}")
        if(TARGET "${lib}")
            set(import_lib "")
            set(import_location "")
            get_target_property(type "${lib}" TYPE)
            if(NOT type STREQUAL "INTERFACE_LIBRARY")
                if(CMAKE_BUILD_TYPE STREQUAL "Debug")
                    get_target_property(link_libs "${lib}" IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG)
                    get_target_property(import_lib "${lib}" IMPORTED_IMPLIB_DEBUG)
                    get_target_property(import_location "${lib}" IMPORTED_LOCATION_DEBUG)
                else()
                    get_target_property(link_libs "${lib}" IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE)
                    get_target_property(import_lib "${lib}" IMPORTED_IMPLIB_RELEASE)
                    get_target_property(import_location "${lib}" IMPORTED_LOCATION_RELEASE)
                endif()
                if(link_libs)
                    kmpkg_curl_flatten(link_libs output_libs)
                endif()
                get_target_property(link_libs "${lib}" IMPORTED_LINK_INTERFACE_LIBRARIES)
                if(link_libs)
                    kmpkg_curl_flatten(link_libs output_libs)
                endif()
                if(NOT import_lib)
                    get_target_property(import_lib "${lib}" IMPORTED_IMPLIB)
                endif()
                if(NOT import_location)
                    get_target_property(import_location "${lib}" IMPORTED_LOCATION)
                endif()
            endif()
            get_target_property(link_libs "${lib}" INTERFACE_LINK_LIBRARIES)
            if(link_libs)
                kmpkg_curl_flatten(link_libs output_libs)
            endif()
            if(import_lib)
                set(lib "${import_lib}")
            elseif(import_location)
                set(lib "${import_location}")
            endif()
        endif()
        if(lib MATCHES "^(.*)/([^/]*)[.]framework$")
            if(CMAKE_MATCH_1 IN_LIST CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES)
                set(lib "-framework ${CMAKE_MATCH_2}")
            else()
                set(lib "-framework ${lib}")
            endif()
        elseif(WIN32 AND lib MATCHES ".*/${CMAKE_IMPORT_LIBRARY_PREFIX}([^/]*)${IMPORT_LIBRARY_SUFFIX}\$")
            set(lib -l${CMAKE_MATCH_1})
        elseif(lib MATCHES ".*/${CMAKE_STATIC_LIBRARY_PREFIX}([^/]*)${STATIC_LIBRARY_SUFFIX}\$")
            set(lib -l${CMAKE_MATCH_1})
        elseif(lib MATCHES ".*/${CMAKE_SHARED_LIBRARY_PREFIX}([^/]*)${SHARED_LIBRARY_SUFFIX}\$")
            set(lib -l${CMAKE_MATCH_1})
        endif()
        if(NOT "${lib}" IN_LIST output_libs)
            list(PREPEND output_libs "${lib}")
        endif()
    endwhile()
    set("${output}" "${output_libs}" PARENT_SCOPE)
endfunction()

if(NOT CURL_DISABLE_LDAP AND NOT WIN32)
    find_package(PkgConfig REQUIRED)
    pkg_check_modules(LDAP REQUIRED ldap)
    set(HAVE_LIBLDAP 1)
    set(CMAKE_LDAP_INCLUDE_DIR "${LDAP_INCLUDE_DIRS}")
    set(CMAKE_LDAP_LIB "${LDAP_LINK_LIBRARIES}" CACHE STRING "")
    pkg_check_modules(LBER REQUIRED lber)
    set(HAVE_LIBLBER 1)
    set(CMAKE_LBER_LIB "${LBER_LINK_LIBRARIES}" CACHE STRING "")
endif()
